﻿using System;
using System.Collections.Generic;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace Kuvankatselin
{

    public delegate void KuvanSiirtoRuudultaEventHandler(object o, KuvanSiirtoRuudultaEventArgs e);

    public class KuvanSiirtoRuudultaEventArgs : EventArgs
    {
        public readonly Kuva siirettavaKuva;
        public KuvanSiirtoRuudultaEventArgs(Kuva kuva)
        {
            siirettavaKuva = kuva;
        }
    }

	/// <summary>
	/// </summary>
	public partial class KuvankatseluAlue
	{
        public event KuvanSiirtoRuudultaEventHandler KuvanSiirtoRuudultaTapahtuma;

		public KuvankatseluAlue()
		{
			this.InitializeComponent();
		}

        public Canvas Piirtoalue()
        {
            return piirtoalue;
        }
        public void LisaaKuva(string kuvanNimi)
        {
            Kuva kuva = new Kuva(kuvanNimi);
            LisaaKuva(kuva);
            Canvas.SetTop(kuva, SystemParameters.WorkArea.Height / 2);
            Canvas.SetLeft(kuva, SystemParameters.WorkArea.Width / 2);

        }
        // Luodaan kuvanlisäys
        public void LisaaKuva(Kuva _kuva)
        {
            Canvas.SetTop(_kuva, Mouse.GetPosition(piirtoalue).Y);
            Canvas.SetLeft(_kuva, Mouse.GetPosition(piirtoalue).X);
            Canvas.SetZIndex(this, 11);
            _kuva.Piirtoalue(this.piirtoalue);
            this.piirtoalue.Children.Add(_kuva);
            // Laitetaan kuva vedettääksi
            _kuva.KuvanSiirtoTapahtuma +=new KuvanSiirtoEventHandler(_kuva_KuvanSiirtoTapahtuma);
        }

        private void _kuva_KuvanSiirtoTapahtuma(object o, KuvanSiirtoEventArgs e)
        {
            if (e.suunta == 2)
            {
                piirtoalue.Children.Remove(e.tapahtuma_kuva);
                if (KuvanSiirtoRuudultaTapahtuma != null)
                {
                    KuvanSiirtoRuudultaEventArgs tapahtuma = new KuvanSiirtoRuudultaEventArgs(e.tapahtuma_kuva);
                    KuvanSiirtoRuudultaTapahtuma(new object(), tapahtuma);
                    e.tapahtuma_kuva.KuvanSiirtoTapahtuma -= _kuva_KuvanSiirtoTapahtuma;
                }
            }
        }
	}
}